<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>ECMAScript With</title>
    <script>
        /*
        1.with的基本概念

        with语句的作用是将代码的作用域设置到一个特定的作用域中，目的是为了简化多次编写访问同一对象的工作。基本语法如下：
        with (expression) statement
        　　下面我们举个例子，来具体说明下：
        var qs = location.search.substring(1)
        
        var hostName = location.hostname
        
        var url = location.href
        以上三个变量 qs\hostName\url 都是指向同一个对象location的，下面我们用with来简化一下：
        whth (location){
            var qs = search.substring(1)
            var hostName = hostName
            var url = href
        }   
        
        2.with的使用限制

        　　（1）不能在严格模式下使用with

        　　（2）使用了with关键字后，js引擎无法对这段代码进行优化

        3.总结

        　　总的来说，强烈不推荐使用with关键字。虽然不使用，但是万一遇到了也要知道为什么会导致我们的程序出现bug.
        */

        function testWith(){

            var testObj = {
                name:"DeLong",
                age:20,
                address:"SZ",
            }

            with(testObj){
                var tName = name;
                var tAge = age;
                var tAddress = address;
                console.log(tName + tAge + tAddress);
                
            }
            
        }
    </script>
</head>
<body>
    <button onclick="testWith()">test with </button>
</body>
</html>